package gov.goias.recad.negocio;

import gov.goias.recad.dominio.GrauInstrucao;
import gov.goias.recad.dominio.Municipio;
import gov.goias.recad.dominio.Pais;
import gov.goias.recad.dominio.Uf;
import gov.goias.recad.excessao.InfraExcessao;
import gov.goias.recad.excessao.NegocioExcessao;
import gov.goias.recad.persistencia.GrauInstrucaoDAO;
import gov.goias.recad.persistencia.MunicipioDAO;
import gov.goias.recad.persistencia.PaisDAO;
import gov.goias.recad.persistencia.UfDAO;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional(readOnly = true)
public class DominioNegocio {
	
	@Resource
	private PaisDAO paisDAO = null;
	
	@Resource
	private UfDAO ufDAO = null;
	
	@Resource	
	private MunicipioDAO municipioDAO = null;
	
	@Resource	
	private GrauInstrucaoDAO grauInstrucaoDAO = null;
	
	
	public List<Pais> listarTodosPaises() throws NegocioExcessao, InfraExcessao{
		return paisDAO.listarTodos();
	}
	
	public List<Uf> listarTodasUfs() throws NegocioExcessao, InfraExcessao{
		return ufDAO.listarTodos();
	}
	
	public List<Municipio> listarMuniciposPorUf(final String uf) throws NegocioExcessao, InfraExcessao{
		return municipioDAO.listarPorUf(uf);
	}
	
	public List<GrauInstrucao> listarGrausInstrucao() throws NegocioExcessao, InfraExcessao{
		return grauInstrucaoDAO.listarTodos();
	}
	
}